/*
 * Copyright (c) 2022  by Junzhao
 * THIS FILE IS PART OF JAVASE Song Huongkang PROJECT
 * All Rights Reserved.
 */

package 自定义泛型;

import java.util.ArrayList;
import java.util.List;

public class Order<T> {
    String name;
    int id;

    T orderT;

    public Order() {// 编译可通过
        T[] arr = (T[]) new Object[10];
    }

    public Order(String name, int id, T orderT) {
        this.name = name;
        this.id = id;
        this.orderT = orderT;
    }

    public Order(String name, int id) {
        this.name = name;
        this.id = id;
    }

    @Override
    public String toString() {
        return "Order{" +
                "name='" + name + '\'' +
                ", id=" + id +
                ", orderT=" + orderT +
                '}';
    }
    // 这不是泛型方法
    public T getOrderT() {
        return orderT;
    }

    public void setOrderT(T orderT) {
        this.orderT = orderT;
    }

    // 在方法中出现了泛型的机构 泛型参数和类的参数没有任何关系
    // 换言之 泛型方法所在的类是不是泛型类都没有关系
    // 也是可以静态的 因为在实例化是不影响！
    public static  <E> List<E> test(E[] e){
        ArrayList<E> AL = new ArrayList<>();
        // ... ...省略方法
        return AL;
    }

//    public static void show(){
//        System.out.println(orderT);// 无法从 static 上下文引用非 static 字段 'orderT'
//    }
}
